diff --git a/user_guide_src/source/database/results.rst b/user_guide_src/source/database/results.rst
index 044360e..ae81998 100644
--- a/user_guide_src/source/database/results.rst
+++ b/user_guide_src/source/database/results.rst
@@ -12,8 +12,7 @@
 Result Arrays
 *************
 
-result()
-========
+**result()**
 
 This method returns the query result as an array of **objects**, or
 **an empty array** on failure. Typically you'll use this in a foreach
@@ -28,7 +27,7 @@
 		echo $row->body;
 	}
 
-The above method is an alias of result_object().
+The above method is an alias of ``result_object()``.
 
 If you run queries that might **not** produce a result, you are
 encouraged to test the result first::
@@ -54,12 +53,11 @@
 
 	foreach ($query->result('User') as $user)
 	{
-	   echo $user->name; // call attributes
-	   echo $user->reverse_name(); // or methods defined on the 'User' class
+		echo $user->name; // access attributes
+		echo $user->reverse_name(); // or methods defined on the 'User' class
 	}
 
-result_array()
-===============
+**result_array()**
 
 This method returns the query result as a pure array, or an empty
 array when no result is produced. Typically you'll use this in a foreach
@@ -78,8 +76,7 @@
 Result Rows
 ***********
 
-row()
-=====
+**row()**
 
 This method returns a single result row. If your query has more than
 one row, it returns only the first row. The result is returned as an
@@ -107,13 +104,12 @@
 	$query = $this->db->query("SELECT * FROM users LIMIT 1;");
 	$query->row(0, 'User');
 	
-	echo $row->name; // call attributes
+	echo $row->name; // access attributes
 	echo $row->reverse_name(); // or methods defined on the 'User' class
 
-row_array()
-===========
+**row_array()**
 
-Identical to the above row() method, except it returns an array.
+Identical to the above ``row()`` method, except it returns an array.
 Example::
 
 	$query = $this->db->query("YOUR QUERY");
@@ -148,11 +144,11 @@
 	| **$row = $query->next_row('array')**
 	| **$row = $query->previous_row('array')**
 
-.. note:: all the methods above will load the whole result into memory 
-    (prefetching) use unbuffered_row() for processing large result sets.
+.. note:: All the methods above will load the whole result into memory
+	(prefetching). Use ``unbuffered_row()`` for processing large
+	result sets.
 
-unbuffered_row()
-================
+**unbuffered_row()**
 
 This method returns a single result row without prefetching the whole
 result in memory as ``row()`` does. If your query has more than one row,
@@ -180,7 +176,7 @@
 Result Helper Methods
 *********************
 
-**$query->num_rows()**
+**num_rows()**
 
 The number of rows returned by the query. Note: In this example, $query
 is the variable that the query result object is assigned to::
@@ -189,13 +185,12 @@
 	
 	echo $query->num_rows();
 
-.. note::
-	Not all database drivers have a native way of getting the total
+.. note:: Not all database drivers have a native way of getting the total
 	number of rows for a result set. When this is the case, all of
-	the data is prefetched and count() is manually called on the
-	resulting array in order to achieve the same methodality.
+	the data is prefetched and ``count()`` is manually called on the
+	resulting array in order to achieve the same result.
 	
-**$query->num_fields()**
+**num_fields()**
 
 The number of FIELDS (columns) returned by the query. Make sure to call
 the method using your query result object::
@@ -204,13 +199,14 @@
 	
 	echo $query->num_fields();
 
-**$query->free_result()**
+**free_result()**
 
 It frees the memory associated with the result and deletes the result
 resource ID. Normally PHP frees its memory automatically at the end of
 script execution. However, if you are running a lot of queries in a
 particular script you might want to free the result after each query
-result has been generated in order to cut down on memory consumptions.
+result has been generated in order to cut down on memory consumption.
+
 Example::
 
 	$query = $this->db->query('SELECT title FROM my_table');
@@ -219,6 +215,7 @@
 	{
 		echo $row->title;
 	}
+
 	$query->free_result();  // The $query result object will no longer be available
 
 	$query2 = $this->db->query('SELECT name FROM some_table');
@@ -250,175 +247,188 @@
 
 .. class:: CI_DB_result
 
+	.. method:: result([$type = 'object'])
+
+		:param	string	$type: Type of requested results - array, object, or class name
+		:returns:	Array containing the fetched rows
+		:rtype:	array
+
+		A wrapper for the ``result_array()``, ``result_object()``
+		and ``custom_result_object()`` methods.
+
+		Usage: see `Result Arrays`_.
+
+	.. method:: result_array()
+
+		:returns:	Array containing the fetched rows
+		:rtype:	array
+
+		Returns the query results as an array of rows, where each
+		row is itself an associative array.
+
+		Usage: see `Result Arrays`_.
+
+	.. method:: result_object()
+
+		:returns:	Array containing the fetched rows
+		:rtype:	array
+
+		Returns the query results as an array of rows, where each
+		row is an object of type ``stdClass``.
+
+		Usage: see `Result Arrays`_.
+
 	.. method:: custom_result_object($class_name)
 
-		:param	string	$class_name: Class name for the results
-		:returns:	Array of objects of type $class_name
-		:rtype:	array of $class_name
+		:param	string	$class_name: Class name for the resulting rows
+		:returns:	Array containing the fetched rows
+		:rtype:	array
 
-		Return the query results as an array of the specified class.
+		Returns the query results as an array of rows, where each
+		row is an instance of the specified class.
+
+	.. method:: row([$n = 0[, $type = 'object']])
+
+		:param	int	$n: Index of the query results row to be returned
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	The requested row or NULL if it doesn't exist
+		:rtype:	mixed
+
+		A wrapper for the ``row_array()``, ``row_object() and 
+		``custom_row_object()`` methods.
+
+		Usage: see `Result Rows`_.
+
+	.. method:: unbuffered_row([$type = 'object'])
+
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	Next row from the result set or NULL if it doesn't exist
+		:rtype:	mixed
+
+		Fetches the next result row and returns it in the
+		requested form.
+
+		Usage: see `Result Rows`_.
+
+	.. method:: row_array([$n = 0])
+
+		:param	int	$n: Index of the query results row to be returned
+		:returns:	The requested row or NULL if it doesn't exist
+		:rtype:	array
+
+		Returns the requested result row as an associative array.
+
+		Usage: see `Result Rows`_.
+
+	.. method:: row_object([$n = 0])
+
+		:param	int	$n: Index of the query results row to be returned
+                :returns:	The requested row or NULL if it doesn't exist
+		:rtype:	stdClass
+
+		Returns the requested result row as an object of type
+		``stdClass``.
+
+		Usage: see `Result Rows`_.
 
 	.. method:: custom_row_object($n, $type)
 
 		:param	int	$n: Index of the results row to return
-		:param	string	$class_name: Class name for the results
-		:returns:	Object of type $type
+		:param	string	$class_name: Class name for the resulting row
+		:returns:	The requested row or NULL if it doesn't exist
 		:rtype:	$type
 
-		Return a specific row from the query results as an object of 
-                the specified class.
+		Returns the requested result row as an instance of the
+		requested class.
 
 	.. method:: data_seek([$n = 0])
 
 		:param	int	$n: Index of the results row to be returned next
-		:returns:	TRUE on success, FALSE otherwise
+		:returns:	TRUE on success, FALSE on failure
 		:rtype:	bool
 
 		Moves the internal results row pointer to the desired offset.
-                Usage: see `Result Helper Methods`_.
 
-	.. method:: field_data()
+		Usage: see `Result Helper Methods`_.
 
-		:returns:	Array of objects containing field meta-data.
-		:rtype:	array
+	.. method:: set_row($key[, $value = NULL])
 
-		Generates an array of objects containing field meta-data.
+		:param	mixed	$key: Column name or array of key/value pairs
+		:param	mixed	$value: Value to assign to the column, $key is a single field name
+		:rtype:	void
+
+		Assigns a value to a particular column.
+
+	.. method:: next_row([$type = 'object'])
+
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	Next row of result set, or NULL if it doesn't exist
+		:rtype:	mixed
+
+		Returns the next row from the result set.
+
+	.. method:: previous_row([$type = 'object'])
+
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	Previous row of result set, or NULL if it doesn't exist
+		:rtype:	mixed
+
+		Returns the previous row from the result set.
 
 	.. method:: first_row([$type = 'object'])
 
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	First row of result set
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	First row of result set, or NULL if it doesn't exist
 		:rtype:	mixed
 
-		Returns the "first" row, as an array, generic object, or 
-                object of a specific class
+		Returns the first row from the result set.
+
+	.. method:: last_row([$type = 'object'])
+
+		:param	string	$type: Type of the requested result - array, object, or class name
+		:returns:	Last row of result set, or NULL if it doesn't exist
+		:rtype:	mixed
+
+		Returns the last row from the result set.
+
+	.. method:: num_rows()
+
+		:returns:	Number of rows in the result set
+		:rtype:	int
+
+		Returns the number of rows in the result set.
+
+		Usage: see `Result Helper Methods`_.
+
+	.. method:: num_fields()
+
+		:returns:	Number of fields in the result set
+		:rtype:	int
+
+		Returns the number of fields in the result set.
+
+		Usage: see `Result Helper Methods`_.
+
+	.. method:: field_data()
+
+		:returns:	Array containing field meta-data
+		:rtype:	array
+
+		Generates an array of ``stdClass`` objects containing
+		field meta-data.
 
 	.. method:: free_result()
 
 		:rtype:	void
 
-		Free the result.
-                Usage: see `Result Helper Methods`_.
+		Frees a result set.
 
-	.. method:: last_row([$type = 'object'])
-
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	Last row of result set
-		:rtype:	mixed
-
-		Returns the "last" row, as an array, generic object, or 
-                object of a specific class
+		Usage: see `Result Helper Methods`_.
 
 	.. method:: list_fields()
 
 		:returns:	Array of column names
 		:rtype:	array
 
-		Fetch Field Names
-
-	.. method:: next_row([$type = 'object'])
-
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	"Next" row of result set, NULL if there isn't one
-		:rtype:	mixed
-
-		Returns the "next" row, as an array, generic object, or 
-                object of a specific class
-
-	.. method:: num_fields()
-
-		:returns:	Number of fields in the result set
-		:rtype:	integer
-
-		Number of fields in the result set.
-                Usage: see `Result Helper Methods`_.
-
-	.. method:: num_rows()
-
-		:returns:	Number of rows in the result set
-		:rtype:	integer
-
-		Number of rows in the result set.
-                Usage: see `Result Helper Methods`_.
-
-	.. method:: previous_row([$type = 'object'])
-
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	"Previous" row of result set, NULL if there isn't one
-		:rtype:	mixed
-
-		Returns the "previous" row, as an array, generic object, or 
-                object of a specific class
-
-	.. method:: result([$type = 'object'])
-
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	Query results as the specified type
-		:rtype:	mixed
-
-		Query result. Acts as a wrapper function for the result_array, 
-                result_object and custom_result_object methods.
-                Usage: see `Result Arrays`_.
-
-	.. method:: result_array()
-
-		:returns:	Query results as an associative array
-		:rtype:	array
-
-		Returns the query results as an array of rows, where each
-                row is itself an associative array.
-                Usage: see `Result Arrays`_.
-
-	.. method:: result_object()
-
-		:returns:	Query results as an array of objects
-		:rtype:	array
-
-		Returns the query results as an array of rows, where each
-                row is an object
-
-	.. method:: row([$n = 0[, $type = 'object']])
-
-		:param	integer	$n: Index of the query results row to be returned
-                :param	string	$type: Type of result requested - array, object, or class name
-		:returns:	Requested row of result set
-		:rtype:	mixed
-
-		Wrapper for result_row_array, result_row_object, and 
-                custom_row_object.
-                Usage: see `Result Rows`_.
-
-	.. method:: row_array([$n = 0])
-
-		:param	integer	$n: Index of the query results row to be returned
-                :returns:	Requested row of result set
-		:rtype:	array
-
-		Returns requested result row as an associative array.
-                Usage: see `Result Rows`_.
-
-	.. method:: row_object([$n = 0])
-
-		:param	integer	$n: Index of the query results row to be returned
-                :returns:	Requested row of result set
-		:rtype:	object
-
-		Returns requested result row as an object
-
-	.. method:: set_row($key[, $value = NULL])
-
-		:param	mixed	$key: Column index or array of key/value pairs
-                :param	mixed	$value: Result to assign to a column if the key is an index
-		:rtype:	void
-
-		Assigns an item into a particular column slot
-
-	.. method:: unbuffered_row([$type = 'object'])
-
-		:param	string	$type: Type of result requested - array, object, or class name
-		:returns:	Requested row of result set
-		:rtype:	mixed
-
-		Fetches the next result row and returns it in the requested 
-                form.
-                Usage: see `Result Rows`_.
\ No newline at end of file
+		Returns an array containing the field names in the
+		result set.
\ No newline at end of file
